package com.atguigu.gmall.product.api;

import com.atguigu.gmall.model.product.*;
import com.atguigu.gmall.product.service.ManagerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/api/product")
public class ProductController {

    @Autowired
    private ManagerService managerService;

    // 1、库存名称 库存图片 包含spuId 入参：skuId
    @GetMapping("/inner/getSkuInfo/{skuId}")
    public SkuInfo getSkuInfo(@PathVariable("skuId") Long skuId) {
        // 已加入Redis缓存优化
        return managerService.getSkuInfo(skuId);
    }

    // 2、商品分类 一级 二级 三级 入参：category3_id
    @GetMapping("/inner/getCategoryView/{category3Id}")
    public BaseCategoryView getCategoryView(@PathVariable("category3Id") Long category3Id) {
        // 已加入Redis缓存优化
        return managerService.getCategoryView(category3Id);
    }

    // 3、价格 库存价格
    @GetMapping("/inner/getPrice/{skuId}")
    public BigDecimal getPrice(@PathVariable("skuId") Long skuId) {

        return managerService.getPrice(skuId);
    }

    // 4、查询销售属性集合 入参：库存id skuId 商品id spuId 返回值：销售属性集合
    @GetMapping("/inner/getSpuSaleAttrListCheckBySku/{skuId}/{spuId}")
    public List<SpuSaleAttr> getSpuSaleAttrListCheckBySku(
            @PathVariable("skuId") Long skuId,
            @PathVariable("spuId") Long spuId) {

        return managerService.getSpuSaleAttrListCheckBySku(skuId, spuId);
    }

    // 5、点击其他销售属性值的组合，跳转到另外的sku页面
    @GetMapping("inner/getSkuValueIdsMap/{spuId}")
    public Map<String, String> getSkuValueIdsMap(@PathVariable("spuId") Long spuId) {

        return managerService.getSkuValueIdsMap(spuId);
    }

    // 查询所有一二三级分类
    @GetMapping("/inner/getCategoryViewList")
    public List<BaseCategoryView> getCategoryViewList() {

        return managerService.getCategoryViewList();
    }

    // 根据品牌id查询品牌
    @GetMapping("/inner/getTrademark/{tmId}")
    public BaseTrademark getTrademark(@PathVariable(name = "tmId") Long tmId) {

        return managerService.getTrademark(tmId);
    }

    // 根据SkuId查询平台属性以及属性值
    @GetMapping("/inner/getAttrValueList/{skuId}")
    public List<SkuAttrValue> getAttrValueList(@PathVariable("skuId") Long skuId) {

        return managerService.getAttrValueListBySkuId(skuId);
    }
}